As computer generated graphics have evolved, the demand for processing capabilities has increased. While a single central processing unit (CPU) has historically been utilized to process instructions for rendering graphics, many graphics applications can be better realized with additional hardware. More specifically, as graphics demands have increased, the use of multiple CPUs, and/or a graphics processing unit (GPU) have been utilized. The introduction of a GPU into a computer has helped streamline the processing of graphics instructions. While the introduction of a GPU has increased graphics capabilities, many dynamic graphics scenes are more suitably rendered with the utilization of a plurality of GPUs. In introducing more than one GPU into a computing environment, synchronization of the GPUs may be desirable.
Software-based multiple CPU synchronization mechanisms have been well developed over the last 15 years. Because of the nature of recently developed GPUs, which have a stream type architecture, the existing multiple CPU synchronization support lacks many desirable characteristics in both software and hardware.
Introduction of PCI-Express system interface can provide a generic message transport level for communication between multiple CPUs and/or GPUs in the computer system as well as coherency support between data blocks in main and local memories. While PCI-Express locked transaction support messages and vendor defined messages can be used as low level primitives for implementation of different synchronization types, this mechanism does not contain necessary GPU synchronization support and vendors may be forced to define their messages to support multi-CPU and multi-GPU configurations of the system.
Additionally, barrier type synchronization is widely used in multithreaded and multiprocessor systems but current implementations of barrier synchronization in single context GPU may cause significant stalls and potential deadlocks, which may lead to inefficient use of GPUs in computer systems.
Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.